package com.code.test.first.array;

public class Code977 {
    /**
     * https://github.com/youngyangyang04/leetcode-master/blob/master/problems/0977.%E6%9C%89%E5%BA%8F%E6%95%B0%E7%BB%84%E7%9A%84%E5%B9%B3%E6%96%B9.md
     * 给你一个按 非递减顺序 排序的整数数组 nums，返回 每个数字的平方 组成的新数组，要求也按 非递减顺序 排序。
     * <p>
     * 示例 1：
     * <p>
     * 输入：nums = [-4,-1,0,3,10]
     * 输出：[0,1,9,16,100]
     * 解释：平方后，数组变为 [16,1,0,9,100]，排序后，数组变为 [0,1,9,16,100]
     * 示例 2：
     * <p>
     * 输入：nums = [-7,-3,2,3,11]
     * 输出：[4,9,9,49,121]
     */

    public static void main(String[] args) {
        int[] arr = {-4, -1, 0, 3, 10};
        int[] res = sortedSquares(arr);
        for (int i : res) {
            System.out.println(i);
        }

    }

    public static int[] sortedSquares(int[] arr) {
        int[] res = new int[arr.length];
        int i = 0;
        int j = arr.length - 1;
        int k = arr.length - 1;
        while (i <= j) {
            if (arr[i] * arr[i] < arr[j] * arr[j]) {
                res[k] = arr[j] * arr[j];
                k--;
                j--;
            } else {
                res[k] = arr[i] * arr[i];
                k--;
                i++;
            }
        }
        return res;
    }
}
